.(C# 또는 VB에서 항상 합법적입니다.그물?
시퀀스를 실행할 수 있습니까?.(
C# 또는 VB에 표시됩니다. 코드 코드넷?
(문자열, 주석 또는 XML 리터럴, EDIT: 또는 전처리기 지시문이 아님)
저는 답이 아니라고 꽤 확신하지만, 확실히 하고 싶습니다.
이 있는 ..
문법에 나타나는 것은 다음과 같습니다.
real-literal:
decimal-digits . decimal-digits ...
. decimal-digits ...
namespace-or-type-name:
namespace-or-type-name . identifier ...
member-access:
primary-expression . identifier ...
predefined-type . identifier ...
qualified-alias-member . identifier ...
base-access:
base . identifier
unbound-type-name:
unbound-type-name . identifier
qualified-identifier:
qualified-identifier . identifier
member-name:
interface-type . identifier
indexer-declarator:
type interface-type . this
규칙에서 것을 합니다.)는 제가 나머지 생산 규칙에서 벗어났다는 것을 의미합니다.)에는 이한경중어것도느우러가 ..(
로서 유효한..
는 숫자, 또는 " 은음숫자식별, 한자또는키유워다니입드효다키다니워▁is▁either" 뒤에 .this
.
에서, C#은 a입니다.#region
세그먼트를 사용하면 다음 문자를 따를 수 있습니다.
#region foo.(
// this is perfectly legal C#
#endregion
VB에서 참고합니다.영역 레이블은 유효한 문자열 리터럴이어야 하므로 따옴표가 있어야 하므로 이는 문제가 되지 않습니다.
#Region "foo.("
' quotes required
#End Region
이후에도 합법입니다.#error
그리고.#warn
VB에 상응하는 것이 없는 것.
하지만 가장 큰 우려는 당신이 어떤 임의의 코드를 가지고 있을 수 있다는 것입니다.#if
C#: 록블에서 C#:
#if false
foo.( perfectly legal
#endif
VB.Net에서:
#If False Then
foo.( perfectly legal
#End If
VB 버전은 임의의 표현식을 허용하기 때문에 표현식을 평가하지 않는 한 어떤 코드가 실제로 VB인지 알 수 없습니다.다시 말해, 구문 분석만으로는 충분하지 않습니다. 여러분도 평가해야 합니다.
C# 4 B,, C# 양전버사 4.0, 의문 하는 것,.
문자가 다음 행에 나타납니다.
실시간 검색: 십진수 - 십진수 - 십진수 지수 - partopt 실제 유형 - 옵션십진수 지수-partopt 실제 유형-partopt 연산자 또는 계산자: 다음 중 하나{ } [ ] ( ) . , : ; 네임스페이스 또는 유형 이름: 네임스페이스-or-type-name .identifier type-message-listopt 구성원 액세스: 주-표현식 . 식별자 유형 -표현식-목록 옵션prefined-type .식별자 type-prefined-listopt정규화된 회원 . 식별자. 기본 액세스: 기본. 식별자 unbound-type-name: unbound-type-name . identifier generic-module-specifier opt 정규화된 식별자: 한정된 식별자. 식별자. 구성원 이름: 인터페이스 유형 . 식별자 인덱서-인덱스터: type interface-type . this [form-parameter-list ]
로 로..
다에진가 10수상, 식자또는 a니다옵나 뒤에 .this
토큰, 그것을 가질 수 있는 유일한 방법..(
는 여러 개의 퀀는다허것입을 입니다.operator-or-punctuator
기호가 서로 붙어 있습니다. 중operator-or-punctuator
확인:
토큰:연산자 또는 계산자
때부터token
어휘 분석에만 사용되며, 어떤 것도 제안하지 않습니다..
합법적인 다음에 a가 나옵니다.(
규칙적으로
물론 그것은 여전히 댓글, 리터럴 등을 남깁니다. 왜냐하면 당신은 이미 그것들에 대해 알고 있기 때문입니다.
문법에 대한 언급도 없고 완전히 비과학적이지만, 제 추측은 이렇습니다.
.(
C#(VB를 대변할 수 없음)에서 사용할 수 없습니다. NET).
댓글이나 문자열 리터럴을 제외하면, 제 생각에는. .
다음과 같이 표시될 수 있습니다.
- 구성원 액세스 연산자. 식별자 뒤에 와야 합니다.식별자는 다음으로 시작할 수 없기 때문입니다.
(
이건 안 돼요. - 실제 리터럴의 소수점으로, 숫자 뒤에 와야 합니다.
(
숫자가 아닙니다.
막으로마지,로으,.
연산자는 오버로드할 수 없으므로,foo.(bar)
작동하지도 않을 것입니다.
VB 참조를 숙독한 후 VB에 대한 대답은 아니오라고 확신합니다.
는 VB 캐릭사다니용합를터는라는 합니다..
내부 부동 소수점 번호 리터럴, 구성원 액세스 및 중첩된 이름 액세스의 세 가지만 사용할 수 있습니다.
하고, 한 것은 XML 리을제고멤액버뒤수것은입니다.IdentifierOrKeyword
(제1.105.6항).잘 " 는매잘있어문자으며되정의된", "경다또이의식우별문자자시만수로"로 시작할 수 있습니다.[
.
중첩된 이름 액세스도 마찬가지입니다(그리고 완전성을 위해).With
블록 및 필드 이니셜라이저).
부동 소수점 리터럴의 경우, 점 다음에 적어도 하나의 숫자(§1.6.3)가 더 와야 합니다.
이 페이지 http://blogs.msdn.com/b/lucian/archive/2010/04/19/grammar.aspx 에서 저는 C#4와 VB10에 대한 완전한 문법 사본을 기계 판독 가능한 형식(EBNF & ANTLR)과 인간 판독 가능한 형식(HTML)으로 작성했습니다.HTML 버전에는 각 토큰에 대해 계산된 "may-follows" 집합이 포함되어 있습니다.
이에 따르면, PERIUY의 "may-follows" 집합은 C#4 또는 VB10에 LPAREN을 포함하지 않습니다.
안타깝게도 문법이 완전하지 않습니다.그럼에도 불구하고 VB/C# 팀 내에서 이러한 문법은 우리가 많은 분석을 위해 시작하는 것입니다.예를 들면...
VB10은 "Sub() STMT" 형식의 "한 줄 문 lambdas"를 도입했습니다. 람다 자체는 식이며, "Dim array = {Sub() STMT1, Sub() STMT2}"와 같은 목록에 나타날 수 있습니다.우리는 표현 뒤에 오는 것과 표현 뒤에 오는 것에 대한 모호성을 인식해야 했습니다.예를 들어, "z=3"이 첫 번째 또는 두 번째 Dim의 일부일 수 있기 때문에 "Dim x = Sub() Dim = 5, z = 3"은 모호합니다.
VB10은 C#이 소스 코드의 아무 곳에나 세미콜론을 포함하도록 허용하는 것과 다소 유사한 "암묵적 라인 연속" 기능을 도입했습니다.우리는 이것이 애매모호함을 가져올지 알아내야 했습니다.이것은 언어에서 어떤 문장의 접두사도 그 자체가 유효한 문장인지 묻는 것과 같습니다.이는 문맥이 없는 두 언어의 교차점이 비어 있는지 여부를 파악하는 것과 같습니다.일반적으로 결정할 수 없는 문제이지만, 알고리즘에 대한 추가적인 "인간의 통찰력"으로 결정할 수 있었던 VB 문법의 경우는 아닙니다.
저는 그들이 C#에 이런 것을 추가할 것이라고 생각하지 않습니다, 단지 틀려 보일 뿐입니다.
저는 VB에 대해 전혀 확신하지 못합니다.넷, 하지만 그들이 어떻게 제네릭을 했는지만 봐도, VB인 것 같습니다.넷 팀은 이런 "이상해 보이지 않는" 태도를 가지고 있지 않습니다.
따라서 향후 버전의 언어에서 사용할 수 있는 툴을 구축할 경우 VB를 주의해야 합니다.그물...
언급URL : https://stackoverflow.com/questions/5582331/is-ever-legal-in-c-sharp-or-vb-net
'it-source' 카테고리의 다른 글
WPF/WP7에서 문자열 목록을 ListBox로 데이터 바인딩하려면 어떻게 해야 합니까? (0) | 2023.05.11 |
---|---|
이클립스에서 AVD 에뮬레이터의 크기를 조정하는 방법은 무엇입니까? (0) | 2023.05.11 |
튜플 대신 목록 출력이 있는 Zip (0) | 2023.05.11 |
UTC/GMT 시간을 현지 시간으로 변환 (0) | 2023.05.11 |
Func와 딜러의 차이점은 무엇입니까? (0) | 2023.05.11 |