Identifikátor (počítačové jazyky) - Identifier (computer languages)
tento článek potřebuje další citace pro ověření.Září 2019) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
v počítačové jazyky, identifikátory jsou žetony (také zvaný symboly ), které pojmenovávají jazykové entity. Některé z druhů entit, které identifikátor může označovat, zahrnují proměnné, typy, štítky, podprogramy, a balíčky.
Které posloupnosti znaků tvoří identifikátory závisí na lexikální gramatika jazyka. Běžným pravidlem je alfanumerické sekvence, s podtržítkem také povoleným (v některých jazycích není _ povoleno) a s podmínkou, že nezačíná číselnou číslicí (pro zjednodušení lexing vyhýbáním se záměně s celočíselné literály ) - tak foo, foo1, foo_bar, _foo
jsou povoleny, ale 1foo
není - toto je definice používaná ve starších verzích C a C ++, Krajta a mnoho dalších jazyků. Novější verze těchto jazyků spolu s mnoha dalšími moderními jazyky podporují mnoho dalších Unicode znaky v identifikátoru. Obecným omezením však není povolit prázdné znaky a jazykové operátory; to zjednodušuje tokenizaci tím, že je vytvoříte volná forma a bez kontextu. Například zakazovat +
v identifikátorech kvůli jeho použití jako binární operace to znamená a + b
a a + b
lze tokenizovat stejně, pokud by to bylo povoleno, a + b
by byl identifikátor, ne doplněk. Mezery v identifikátoru jsou obzvláště problematické, protože pokud jsou v identifikátorech povoleny mezery, pak klauzule jako pokud je deštivý den, pak 1
je legální, s deštivý den
jako identifikátor, ale tokenizace vyžaduje frázový kontext, že je ve stavu klauzule if. Některé jazyky však umožňují mezery v identifikátorech, například ALGOL 68 a některé varianty ALGOL - například následující je platné prohlášení: nemovitý poloviční pí;
které lze zadat jako .nemovitý. poloviční pí;
(klíčová slova jsou zobrazena tučně, konkrétně pomocí stropping ). V ALGOLu to bylo možné, protože klíčová slova jsou syntakticky diferencovaná, takže nehrozí riziko kolize nebo nejednoznačnosti, mezery jsou během rekonstrukce linky fáze a zdroj byl zpracován prostřednictvím analýza bez skeneru, takže lexing může být kontextově citlivý.
Ve většině jazyků mají některé znakové sekvence lexikální formu identifikátoru, ale jsou známy jako klíčová slova - například, -li
je často klíčové slovo pro klauzuli if, ale lexikálně má stejnou formu jako ig
nebo foo
jmenovitě posloupnost písmen. Toto překrytí lze řešit různými způsoby: může být zakázáno být identifikátory - což zjednodušuje tokenizaci a analýzu - v takovém případě jsou vyhrazená slova; oba mohou být povoleni, ale odlišeni jinými způsoby, například pomocí stroppingu; nebo klíčové slovo sekvence mohou být povoleny jako identifikátory a jaký smysl je určen z kontextu, který vyžaduje kontextově citlivý lexer. Non-keywords mohou být také vyhrazená slova (zakázaná jako identifikátory), zejména pro dopředná kompatibilita, pro případ, že by se slovo mohlo v budoucnu stát klíčovým slovem. V několika jazycích, např. PL / 1, rozdíl není jasný.
Rozsah nebo přístupnost v rámci programu identifikátoru může být místní nebo globální. Globální identifikátor je deklarován mimo funkce a je k dispozici v celém programu. Místní identifikátor je deklarován v rámci konkrétní funkce a je k dispozici pouze v rámci této funkce.[1]
Pro implementace programovacích jazyků, které používají a překladač, identifikátory jsou často pouze čas kompilace subjekty. To znamená v runtime zkompilovaný program obsahuje spíše odkazy na adresy paměti a posuny než na tokeny textového identifikátoru (tyto adresy paměti nebo posuny, které byly přiřazeny kompilátorem ke každému identifikátoru).
V jazycích, které podporují odraz, jako například interaktivní vyhodnocení zdrojového kódu (pomocí tlumočníka nebo přírůstkového kompilátoru), jsou identifikátory také běhové entity, někdy dokonce jako prvotřídní objekty které lze volně manipulovat a hodnotit. v Lisp, tito se nazývají symboly.
Překladatelé a tlumočníci obvykle nepřidělují identifikátoru žádný sémantický význam na základě použité skutečné posloupnosti znaků. Existují však výjimky.
Například:
- v Perl proměnná je označena pomocí předpony zvané a sigil, který specifikuje aspekty interpretace proměnné výrazy.
- v Rubín automaticky se zohlední proměnná neměnný pokud jeho identifikátor začíná velkým písmenem.
- v Fortran, první písmeno v názvu proměnné označuje, zda je ve výchozím nastavení vytvořeno jako celé číslo nebo plovoucí bod proměnná.
- v Jít, velká písmena prvního písmene názvu proměnné určuje jeho viditelnost (velká pro veřejnost, malá pro soukromá).
V některých jazycích, jako je Go, je jedinečnost identifikátorů založena na jejich pravopisu a jejich viditelnosti.[2]
v HTML identifikátor je jedním z možných atributy z Prvek HTML. V dokumentu je jedinečný.
Reference
- ^ Malik, D. (2014). Programování v C ++: od analýzy problému po návrh programu (7. vydání). Cenage učení. p. 397. ISBN 978-1-285-85274-4.
- ^ „Specifikace programovacího jazyka Go - programovací jazyk Go“. Golang.org. 8. 5. 2013. Citováno 2013-06-05.